/**
 * 数字转换为中文文本工具
 * 提供将数字转换为中文表示的功能
 */

/**
 * 将数字转换为中文大写
 * @param {number|string} num - 要转换的数字
 * @returns {string} - 返回中文大写表示
 */
export function numberToChinese(num) {
  if (num === null || num === undefined || num === '') return '';
  
  // 确保输入是数字
  num = Number(num);
  if (isNaN(num)) return '';
  
  const digits = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
  const positions = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '兆'];
  
  let result = '';
  let numStr = Math.abs(num).toString();
  const length = numStr.length;
  
  // 处理前导零
  numStr = numStr.replace(/^0+/, '');
  
  if (numStr === '') return '零';
  
  // 处理整数部分
  for (let i = 0; i < numStr.length; i++) {
    const digit = parseInt(numStr[i]);
    const position = length - i - 1;
    
    // 当数字为0时的特殊处理
    if (digit === 0) {
      // 当前数字是0且不是最后一位，且下一位不是0时，加上"零"
      if (i < numStr.length - 1 && numStr[i + 1] !== '0') {
        result += digits[0];
      }
    } else {
      result += digits[digit] + positions[position];
    }
  }
  
  // 处理特殊情况
  result = result.replace(/零+$/, ''); // 移除尾部的零
  result = result.replace(/零+/g, '零'); // 多个连续的零替换为一个
  
  // 处理十位数的特殊情况（比如：十一，十二，而不是一十一，一十二）
  if (length === 2 && numStr[0] === '1') {
    result = result.replace(/^一/, '');
  }
  
  // 添加负号
  if (num < 0) {
    result = '负' + result;
  }
  
  return result;
} 